package com.dyna.digit.process.domain.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.dyna.constants.DateFatter;
import com.dyna.core.aop.annotation.EnumValid;
import com.dyna.enums.DigitCategoryEnum;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonInclude;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import javax.validation.constraints.Pattern;
import java.io.Serializable;
import java.time.LocalDate;
import java.util.List;

/**
 * @description digit_declare_base_ywl
 * @author zcw
 * @date 2024-09-16
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
@ApiModel("digit_declare_base_ywl")
public class DigitDeclareBaseYwl implements Serializable {

    private static final long serialVersionUID = 1L;

    public DigitDeclareBaseYwl(Integer projectId) {
        this.projectId = projectId;
    }

    @TableId(type = IdType.AUTO)
    @ApiModelProperty("主键")
    @JsonInclude(value = JsonInclude.Include.NON_NULL)
    private Integer id;


    @ApiModelProperty("项目id")
    private Integer projectId;


    @ApiModelProperty("联系人")
    private String projContacts;


    @ApiModelProperty("联系人手机号")
    private String projContactsCall;


    @ApiModelProperty("联系人电话")
    private String projContactsTel;


    @ApiModelProperty("职务")
    private String job;


    @ApiModelProperty("地址")
    private String address;


    @ApiModelProperty("项目分类")
    @EnumValid(value = DigitCategoryEnum.class, message = "项目分类参数异常")
    private List<Integer> projCategory;


    @ApiModelProperty("关联一本账")
    private Integer linkAccount;


    @ApiModelProperty("项目负责人")
    private String projPrincipal;


    @ApiModelProperty("项目负责人手机号")
    private String projPrincipalCall;


    @ApiModelProperty("项目开始时间")
    @JsonFormat(pattern = DateFatter.YYYY_MM_DD)
    private LocalDate projStartTime;


    @ApiModelProperty("项目结束时间")
    @JsonFormat(pattern = DateFatter.YYYY_MM_DD)
    private LocalDate projEndTime;


    @ApiModelProperty(value = "密级", notes = "单选")
    private Integer projIsConfidentiality;


    @ApiModelProperty("关联历年项目")
    private Integer projLinkHistory;


    @ApiModelProperty("用户范围")
    private List<Integer> projUserRange;


    @ApiModelProperty("网络环境")
    private List<Integer> projNetEnv;


    @ApiModelProperty("发布端")
    private List<Integer> projPublish;


    @ApiModelProperty("建设层级")
    private Integer projConsClass;


    @ApiModelProperty("重大任务（是/否）")
    @Pattern(regexp = "^(是|否)$", message = "重大任务参数异常")
    private String projGreatTask;


    @ApiModelProperty("是否全省统建")
    @Pattern(regexp = "^(是|否)$", message = "重大任务参数异常")
    private String projIsProvinceCons;


    @ApiModelProperty("核心任务（是/否）")
    @Pattern(regexp = "^(是|否)$", message = "重大任务参数异常")
    private String projCoreTask;


    @ApiModelProperty("多跨场景（是/否）")
    @Pattern(regexp = "^(是|否)$", message = "重大任务参数异常")
    private String projMultiScene;


    @ApiModelProperty("体系贯通（是/否）")
    @Pattern(regexp = "^(是|否)$", message = "重大任务参数异常")
    private String projSysPenetration;


    @ApiModelProperty("等保级别")
    private Integer projEqualInsuranceLevel;


    @ApiModelProperty("是否协同")
    @Pattern(regexp = "^(是|否)$", message = "重大任务参数异常")
    private String projIsSynergy;


    @ApiModelProperty("贯通层级")
    private Integer proPenetrationHierarchy;


}
